package com.cos.lession56.web.controller;

import com.cos.lession56.entity.User;
import com.cos.lession56.services.UserServices;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @author: COS
 * @time: 2022/3/10 14:03
 * @description:
 * @RestController 标识这个类是个controller类并且默认了真个类的方法都是使用@ResponseBody
 * <p>
 * RestController+ResponseBody 结合的注解
 */
//@Controller
@RestController
@RequestMapping("/demo")
public class DemoController {
//    @Autowired
    private UserServices userServices;

    //ajax
    @RequestMapping("/a")
//    @ResponseBody
    public String xxx() throws Exception {
        int i=1;
        if (i==1){
            throw new Exception("出现了类型转换异常");
        }
        return "娃哈哈";
    }

    @RequestMapping("/b")
    public User getUser() throws NullPointerException{
        //出现异常,controller不知道出现异常,
        User user = null;
        int i=1;
        if (i==1){
            throw new NullPointerException("出现空指针了");
        }
//        user = userServices.getUser();
        return user;
    }


    /**
     * 接受json参数的方式
     * 1.$.ajax
     * 2.设置属性contentType:"application/json",data:json字符串数据
     * 3.设置属性提交方式为post的方式
     * 4.controller的方法上,对象参数前面必须填写@ReqeustBody来设置接受json参数数据
     * <p>
     * ?name=value&name=value
     * springMVC接受参数的时候,默认接受的是请求行/头的数据
     * 也就是name=value&name=value 格式的数据 ,url传参
     * //json的数参数是{"id":1,"name":"张三","sex":"男"},放到请求体里面
     *
     * @RequestBody 写在对象参数的前面就告诉springMVC
     * 现在要接受的参数是json类型的参数,
     * spring接受json字符串,反序列化转为对象数据
     */
    @RequestMapping("/addUser")
    public String addUser(@RequestBody User user) {
        System.out.println(user);
        return "哈哈哈";
    }

    @RequestMapping("/addUserList")
    public String addUserList(@RequestBody List<User> userList) {
        System.out.println(userList);
        return "哦呵呵";
    }
}
